<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'>
     <meta name='viewport' content='width=device-width, initial-scale=1.0'>
     <title>Let能解决暂时性死区问题</title>
     <link rel='stylesheet' href='https://cdn.bootcdn.net/ajax/libs/highlight.js/11.7.0/styles/atom-one-dark.min.css'>
     <script src='//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js'></script>
    <style>code::-webkit-scrollbar {display: none;}</style>
</head>
<body>
     <pre>
        <code style='border-radius: 10px;'>
            /* 暂时性死区 */
            // console.log(a); // a is not defined
            // console.log(typeof a); // “undefined” 这是浏览器的bug 应该是报错的 因为没a(暂时性死区)
            console.log(a); // Cannot access 'a' before initialization
            let a

            /* Let 和 var的三个区别 
            1.不管之前通过什么办法只要当前的栈内存中存在了这个变量 我们使用let const 等重复声明这些变量就是语法错误
            2.// console.log(typeof a); // “undefined” 这是浏览器的bug 应该是报错的 因为没a(暂时性死区)
            console.log(a); // Cannot access 'a' before initialization(let 比 var更严谨)
            */
        </code>
     </pre>
     <script> hljs.highlightAll(); </script>
     <script>
        /* 暂时性死区 */
        // console.log(a); // a is not defined
        // console.log(typeof a); // “undefined” 这是浏览器的bug 应该是报错的 因为没a(暂时性死区)
        console.log(a); // Cannot access 'a' before initialization
        let a

        /* Let 和 var的三个区别 
           1.不管之前通过什么办法只要当前的栈内存中存在了这个变量 我们使用let const 等重复声明这些变量就是语法错误
           2.// console.log(typeof a); // “undefined” 这是浏览器的bug 应该是报错的 因为没a(暂时性死区)
        console.log(a); // Cannot access 'a' before initialization(let 比 var更严谨)
        */
     </script>
</body>
</html>